/*
 * Copyright (C), 2015-2019
 * FileName: OpcodeEnum
 * Author:   lizhao
 * Date:     2019-02-16 16:28
 * Description: opcode的枚举类
 * History:
 * <author>          <time>          <version>          <desc>
 * 作者姓名           修改时间           版本号              描述
 */
package com.lizhaoblog.jjvm.opcode;

import com.lizhaoblog.jjvm.common.CommonValue;
import com.lizhaoblog.jjvm.runtime.Frame;

/**
 * 〈一句话功能简述〉<br>
 * 〈opcode的枚举类〉
 *
 * @author lizhao
 * @date 2019-02-16 16:28
 * @since 1.0.0
 */
public enum OpcodeEnum {

    OPCODE_ACONST_NULL(CommonValue.CONSTANT_OPCODE_ACONST_NULL) {
        @Override
        void execute(Frame frame, byte[] operands) {
            frame.getOperandStack().pushRef(null);
        }
    },
    OPCODE_ICONST_M1(CommonValue.CONSTANT_OPCODE_ICONST_M1) {
        @Override
        void execute(Frame frame, byte[] operands) {
            frame.getOperandStack().pushInt(-1);
        }
    },
    OPCODE_ICONST_0(CommonValue.CONSTANT_OPCODE_ICONST_0) {
        @Override
        void execute(Frame frame, byte[] operands) {
            frame.getOperandStack().pushInt(0);
        }
    },
    OPCODE_ICONST_1(CommonValue.CONSTANT_OPCODE_ICONST_1) {
        @Override
        void execute(Frame frame, byte[] operands) {
            frame.getOperandStack().pushInt(1);
        }
    },
    OPCODE_ICONST_2(CommonValue.CONSTANT_OPCODE_ICONST_2) {
        @Override
        void execute(Frame frame, byte[] operands) {
            frame.getOperandStack().pushInt(2);
        }
    },
    OPCODE_ICONST_3(CommonValue.CONSTANT_OPCODE_ICONST_3) {
        @Override
        void execute(Frame frame, byte[] operands) {
            frame.getOperandStack().pushInt(3);
        }
    },
    OPCODE_ICONST_4(CommonValue.CONSTANT_OPCODE_ICONST_4) {
        @Override
        void execute(Frame frame, byte[] operands) {
            frame.getOperandStack().pushInt(4);
        }
    },
    OPCODE_ICONST_5(CommonValue.CONSTANT_OPCODE_ICONST_5) {
        @Override
        void execute(Frame frame, byte[] operands) {
            frame.getOperandStack().pushInt(5);
        }
    },
    OPCODE_LCONST_0(CommonValue.CONSTANT_OPCODE_LCONST_0) {
        @Override
        void execute(Frame frame, byte[] operands) {
            frame.getOperandStack().pushLong(0);
        }
    },
    OPCODE_LCONST_1(CommonValue.CONSTANT_OPCODE_LCONST_1) {
        @Override
        void execute(Frame frame, byte[] operands) {
            frame.getOperandStack().pushLong(1);
        }
    },
    OPCODE_FCONST_0(CommonValue.CONSTANT_OPCODE_FCONST_0) {
        @Override
        void execute(Frame frame, byte[] operands) {
            frame.getOperandStack().pushFloat(0);
        }
    },
    OPCODE_FCONST_1(CommonValue.CONSTANT_OPCODE_FCONST_1) {
        @Override
        void execute(Frame frame, byte[] operands) {
            frame.getOperandStack().pushFloat(1);
        }
    },
    OPCODE_FCONST_2(CommonValue.CONSTANT_OPCODE_FCONST_2) {
        @Override
        void execute(Frame frame, byte[] operands) {
            frame.getOperandStack().pushFloat(2);
        }
    },
    OPCODE_DCONST_0(CommonValue.CONSTANT_OPCODE_DCONST_0) {
        @Override
        void execute(Frame frame, byte[] operands) {
            frame.getOperandStack().pushDouble(0);
        }
    },
    OPCODE_DCONST_1(CommonValue.CONSTANT_OPCODE_DCONST_1) {
        @Override
        void execute(Frame frame, byte[] operands) {
            frame.getOperandStack().pushDouble(1);
        }
    },
    OPCODE_BIPUSH(CommonValue.CONSTANT_OPCODE_BIPUSH) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_SIPUSH(CommonValue.CONSTANT_OPCODE_SIPUSH) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LDC(CommonValue.CONSTANT_OPCODE_LDC) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LDC_W(CommonValue.CONSTANT_OPCODE_LDC_W) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LDC2_W(CommonValue.CONSTANT_OPCODE_LDC2_W) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ALOAD(CommonValue.CONSTANT_OPCODE_ALOAD) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ALOAD_0(CommonValue.CONSTANT_OPCODE_ALOAD_0) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ALOAD_1(CommonValue.CONSTANT_OPCODE_ALOAD_1) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ALOAD_2(CommonValue.CONSTANT_OPCODE_ALOAD_2) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ALOAD_3(CommonValue.CONSTANT_OPCODE_ALOAD_3) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ILOAD(CommonValue.CONSTANT_OPCODE_ILOAD) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ILOAD_0(CommonValue.CONSTANT_OPCODE_ILOAD_0) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ILOAD_1(CommonValue.CONSTANT_OPCODE_ILOAD_1) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ILOAD_2(CommonValue.CONSTANT_OPCODE_ILOAD_2) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ILOAD_3(CommonValue.CONSTANT_OPCODE_ILOAD_3) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LLOAD(CommonValue.CONSTANT_OPCODE_LLOAD) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LLOAD_0(CommonValue.CONSTANT_OPCODE_LLOAD_0) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LLOAD_1(CommonValue.CONSTANT_OPCODE_LLOAD_1) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LLOAD_2(CommonValue.CONSTANT_OPCODE_LLOAD_2) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LLOAD_3(CommonValue.CONSTANT_OPCODE_LLOAD_3) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_FLOAD(CommonValue.CONSTANT_OPCODE_FLOAD) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_FLOAD_0(CommonValue.CONSTANT_OPCODE_FLOAD_0) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_FLOAD_1(CommonValue.CONSTANT_OPCODE_FLOAD_1) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_FLOAD_2(CommonValue.CONSTANT_OPCODE_FLOAD_2) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_FLOAD_3(CommonValue.CONSTANT_OPCODE_FLOAD_3) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DLOAD(CommonValue.CONSTANT_OPCODE_DLOAD) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DLOAD_0(CommonValue.CONSTANT_OPCODE_DLOAD_0) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DLOAD_1(CommonValue.CONSTANT_OPCODE_DLOAD_1) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DLOAD_2(CommonValue.CONSTANT_OPCODE_DLOAD_2) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DLOAD_3(CommonValue.CONSTANT_OPCODE_DLOAD_3) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_AALOAD(CommonValue.CONSTANT_OPCODE_AALOAD) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IALOAD(CommonValue.CONSTANT_OPCODE_IALOAD) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LALOAD(CommonValue.CONSTANT_OPCODE_LALOAD) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_FALOAD(CommonValue.CONSTANT_OPCODE_FALOAD) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DALOAD(CommonValue.CONSTANT_OPCODE_DALOAD) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_BALOAD(CommonValue.CONSTANT_OPCODE_BALOAD) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_CALOAD(CommonValue.CONSTANT_OPCODE_CALOAD) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_SALOAD(CommonValue.CONSTANT_OPCODE_SALOAD) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ASTORE(CommonValue.CONSTANT_OPCODE_ASTORE) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ASTROE_0(CommonValue.CONSTANT_OPCODE_ASTROE_0) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ASTORE_1(CommonValue.CONSTANT_OPCODE_ASTORE_1) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ASTORE_2(CommonValue.CONSTANT_OPCODE_ASTORE_2) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ASTORE_3(CommonValue.CONSTANT_OPCODE_ASTORE_3) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ISTORE(CommonValue.CONSTANT_OPCODE_ISTORE) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ISTORE_0(CommonValue.CONSTANT_OPCODE_ISTORE_0) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ISTORE_1(CommonValue.CONSTANT_OPCODE_ISTORE_1) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ISTORE_2(CommonValue.CONSTANT_OPCODE_ISTORE_2) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ISTORE_3(CommonValue.CONSTANT_OPCODE_ISTORE_3) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LSTORE(CommonValue.CONSTANT_OPCODE_LSTORE) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LSTORE_0(CommonValue.CONSTANT_OPCODE_LSTORE_0) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LSTORE_1(CommonValue.CONSTANT_OPCODE_LSTORE_1) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LSTORE_2(CommonValue.CONSTANT_OPCODE_LSTORE_2) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LSTROE_3(CommonValue.CONSTANT_OPCODE_LSTROE_3) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_FSTORE(CommonValue.CONSTANT_OPCODE_FSTORE) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_FSTORE_0(CommonValue.CONSTANT_OPCODE_FSTORE_0) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_FSTORE_1(CommonValue.CONSTANT_OPCODE_FSTORE_1) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_FSTORE_2(CommonValue.CONSTANT_OPCODE_FSTORE_2) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_FSTORE_3(CommonValue.CONSTANT_OPCODE_FSTORE_3) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DSTORE(CommonValue.CONSTANT_OPCODE_DSTORE) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DSTORE_0(CommonValue.CONSTANT_OPCODE_DSTORE_0) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DSTORE_1(CommonValue.CONSTANT_OPCODE_DSTORE_1) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DSTORE_2(CommonValue.CONSTANT_OPCODE_DSTORE_2) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DSTORE_3(CommonValue.CONSTANT_OPCODE_DSTORE_3) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_AASTORE(CommonValue.CONSTANT_OPCODE_AASTORE) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IASTORE(CommonValue.CONSTANT_OPCODE_IASTORE) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LASTORE(CommonValue.CONSTANT_OPCODE_LASTORE) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_FASTORE(CommonValue.CONSTANT_OPCODE_FASTORE) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DASTORE(CommonValue.CONSTANT_OPCODE_DASTORE) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_BASTROE(CommonValue.CONSTANT_OPCODE_BASTROE) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_CASTORE(CommonValue.CONSTANT_OPCODE_CASTORE) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_SASTORE(CommonValue.CONSTANT_OPCODE_SASTORE) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_WIDE(CommonValue.CONSTANT_OPCODE_WIDE) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_NOP(CommonValue.CONSTANT_OPCODE_NOP) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_POP(CommonValue.CONSTANT_OPCODE_POP) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_POP2(CommonValue.CONSTANT_OPCODE_POP2) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DUP(CommonValue.CONSTANT_OPCODE_DUP) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DUP_X1(CommonValue.CONSTANT_OPCODE_DUP_X1) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DUP_X2(CommonValue.CONSTANT_OPCODE_DUP_X2) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DUP2(CommonValue.CONSTANT_OPCODE_DUP2) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DUP2_X1(CommonValue.CONSTANT_OPCODE_DUP2_X1) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DUP2_X2(CommonValue.CONSTANT_OPCODE_DUP2_X2) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_SWAP(CommonValue.CONSTANT_OPCODE_SWAP) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_I2F(CommonValue.CONSTANT_OPCODE_I2F) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_I2L(CommonValue.CONSTANT_OPCODE_I2L) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_I2D(CommonValue.CONSTANT_OPCODE_I2D) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_F2I(CommonValue.CONSTANT_OPCODE_F2I) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_F2L(CommonValue.CONSTANT_OPCODE_F2L) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_F2D(CommonValue.CONSTANT_OPCODE_F2D) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_L2I(CommonValue.CONSTANT_OPCODE_L2I) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_L2F(CommonValue.CONSTANT_OPCODE_L2F) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_L2D(CommonValue.CONSTANT_OPCODE_L2D) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_D2I(CommonValue.CONSTANT_OPCODE_D2I) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_D2F(CommonValue.CONSTANT_OPCODE_D2F) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_D2L(CommonValue.CONSTANT_OPCODE_D2L) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_I2B(CommonValue.CONSTANT_OPCODE_I2B) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_I2C(CommonValue.CONSTANT_OPCODE_I2C) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_I2S(CommonValue.CONSTANT_OPCODE_I2S) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IADD(CommonValue.CONSTANT_OPCODE_IADD) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ISUB(CommonValue.CONSTANT_OPCODE_ISUB) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IMUL(CommonValue.CONSTANT_OPCODE_IMUL) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IDIV(CommonValue.CONSTANT_OPCODE_IDIV) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IREM(CommonValue.CONSTANT_OPCODE_IREM) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_INEG(CommonValue.CONSTANT_OPCODE_INEG) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LADD(CommonValue.CONSTANT_OPCODE_LADD) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LSUB(CommonValue.CONSTANT_OPCODE_LSUB) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LMUL(CommonValue.CONSTANT_OPCODE_LMUL) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LDIV(CommonValue.CONSTANT_OPCODE_LDIV) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LREM(CommonValue.CONSTANT_OPCODE_LREM) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LNEG(CommonValue.CONSTANT_OPCODE_LNEG) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IINC(CommonValue.CONSTANT_OPCODE_IINC) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_FADD(CommonValue.CONSTANT_OPCODE_FADD) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_FSUB(CommonValue.CONSTANT_OPCODE_FSUB) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_FMUL(CommonValue.CONSTANT_OPCODE_FMUL) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_FDIV(CommonValue.CONSTANT_OPCODE_FDIV) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_FREM(CommonValue.CONSTANT_OPCODE_FREM) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_FNEG(CommonValue.CONSTANT_OPCODE_FNEG) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DADD(CommonValue.CONSTANT_OPCODE_DADD) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DSUB(CommonValue.CONSTANT_OPCODE_DSUB) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DMUL(CommonValue.CONSTANT_OPCODE_DMUL) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DDIV(CommonValue.CONSTANT_OPCODE_DDIV) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DREM(CommonValue.CONSTANT_OPCODE_DREM) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DNEG(CommonValue.CONSTANT_OPCODE_DNEG) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ISHL(CommonValue.CONSTANT_OPCODE_ISHL) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LSHL(CommonValue.CONSTANT_OPCODE_LSHL) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ISHR(CommonValue.CONSTANT_OPCODE_ISHR) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LSHR(CommonValue.CONSTANT_OPCODE_LSHR) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IUSHR(CommonValue.CONSTANT_OPCODE_IUSHR) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LUSHR(CommonValue.CONSTANT_OPCODE_LUSHR) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IAND(CommonValue.CONSTANT_OPCODE_IAND) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LAND(CommonValue.CONSTANT_OPCODE_LAND) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IOR(CommonValue.CONSTANT_OPCODE_IOR) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LOR(CommonValue.CONSTANT_OPCODE_LOR) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IXOR(CommonValue.CONSTANT_OPCODE_IXOR) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LXOR(CommonValue.CONSTANT_OPCODE_LXOR) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IFEQ(CommonValue.CONSTANT_OPCODE_IFEQ) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IFNE(CommonValue.CONSTANT_OPCODE_IFNE) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IFLT(CommonValue.CONSTANT_OPCODE_IFLT) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IFLE(CommonValue.CONSTANT_OPCODE_IFLE) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IFGT(CommonValue.CONSTANT_OPCODE_IFGT) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IFGE(CommonValue.CONSTANT_OPCODE_IFGE) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IF_ICMPEQ(CommonValue.CONSTANT_OPCODE_IF_ICMPEQ) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IF_ICMPNE(CommonValue.CONSTANT_OPCODE_IF_ICMPNE) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IF_ICMPLT(CommonValue.CONSTANT_OPCODE_IF_ICMPLT) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IF_ICMPLE(CommonValue.CONSTANT_OPCODE_IF_ICMPLE) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IF_ICMPGT(CommonValue.CONSTANT_OPCODE_IF_ICMPGT) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IF_ICMPGE(CommonValue.CONSTANT_OPCODE_IF_ICMPGE) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IFNULL(CommonValue.CONSTANT_OPCODE_IFNULL) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IFNONNULL(CommonValue.CONSTANT_OPCODE_IFNONNULL) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IF_ACMPEQ(CommonValue.CONSTANT_OPCODE_IF_ACMPEQ) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IF_ACMPNE(CommonValue.CONSTANT_OPCODE_IF_ACMPNE) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LCMP(CommonValue.CONSTANT_OPCODE_LCMP) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_FCMPL(CommonValue.CONSTANT_OPCODE_FCMPL) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_FCMPG(CommonValue.CONSTANT_OPCODE_FCMPG) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DCMPL(CommonValue.CONSTANT_OPCODE_DCMPL) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DCMPG(CommonValue.CONSTANT_OPCODE_DCMPG) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_GOTO(CommonValue.CONSTANT_OPCODE_GOTO) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_GOTO_W(CommonValue.CONSTANT_OPCODE_GOTO_W) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_TABLESWITCH(CommonValue.CONSTANT_OPCODE_TABLESWITCH) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LOOKUPSWITCH(CommonValue.CONSTANT_OPCODE_LOOKUPSWITCH) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ATHROW(CommonValue.CONSTANT_OPCODE_ATHROW) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_JSR(CommonValue.CONSTANT_OPCODE_JSR) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_JSR_W(CommonValue.CONSTANT_OPCODE_JSR_W) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_RET(CommonValue.CONSTANT_OPCODE_RET) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_NEW(CommonValue.CONSTANT_OPCODE_NEW) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_CHECKCAST(CommonValue.CONSTANT_OPCODE_CHECKCAST) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_INSTANCEOF(CommonValue.CONSTANT_OPCODE_INSTANCEOF) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_GETFIELD(CommonValue.CONSTANT_OPCODE_GETFIELD) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_PUTFIELD(CommonValue.CONSTANT_OPCODE_PUTFIELD) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_GETSTATIC(CommonValue.CONSTANT_OPCODE_GETSTATIC) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_PUTSTATIC(CommonValue.CONSTANT_OPCODE_PUTSTATIC) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_NEWARRAY(CommonValue.CONSTANT_OPCODE_NEWARRAY) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ANEWARRAY(CommonValue.CONSTANT_OPCODE_ANEWARRAY) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ARRAYLENGTH(CommonValue.CONSTANT_OPCODE_ARRAYLENGTH) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_MULTIANEWARRAY(CommonValue.CONSTANT_OPCODE_MULTIANEWARRAY) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_INVOKESPECIAL(CommonValue.CONSTANT_OPCODE_INVOKESPECIAL) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_INVOKEVIRTUAL(CommonValue.CONSTANT_OPCODE_INVOKEVIRTUAL) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_INVOKESTATIC(CommonValue.CONSTANT_OPCODE_INVOKESTATIC) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_INVOKEINTERFACE(CommonValue.CONSTANT_OPCODE_INVOKEINTERFACE) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_IRETURN(CommonValue.CONSTANT_OPCODE_IRETURN) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_LRETURN(CommonValue.CONSTANT_OPCODE_LRETURN) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_FRETURN(CommonValue.CONSTANT_OPCODE_FRETURN) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_DRETURN(CommonValue.CONSTANT_OPCODE_DRETURN) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_ARETURN(CommonValue.CONSTANT_OPCODE_ARETURN) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_RETURN(CommonValue.CONSTANT_OPCODE_RETURN) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_MONITORENTER(CommonValue.CONSTANT_OPCODE_MONITORENTER) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    },
    OPCODE_MONITOREXIT(CommonValue.CONSTANT_OPCODE_MONITOREXIT) {
        @Override
        void execute(Frame frame, byte[] operands) {
        }
    };


    private final int code;

    OpcodeEnum(int code) {
        this.code = code;
    }

    /**
     * 操作码执行时调用
     *
     * @param frame 栈桢
     */
    abstract void execute(Frame frame, byte[] operands);

    public int getCode() {
        return code;
    }

}